//package learn.up.java.md;
//
//import java.io.UnsupportedEncodingException;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//
//import org.apache.commons.codec.binary.Hex;
//import org.apache.commons.codec.cli.Digest;
//import org.apache.commons.codec.digest.DigestUtils;
//import org.bouncycastle.crypto.digests.SHA1Digest;
//
///**
// * SHA:安全散列算法 ，固定长度的算法，美国国家安全局设计，在MD4基础上演进的
// * Secure hashed algorithm
// * @author Administrator
// *
// */
//public class SHATest {
//
//	private static String str = "john";
//
//	public static void main(String[] args) {
//		jdkSHA();
//		bcSHA();
//		commonscodec();
//	}
//
//	public static void jdkSHA() {
//		MessageDigest md;
//		try {
//			md = MessageDigest.getInstance("SHA");
//			md.update(str.getBytes("utf-8"));
//			String hexString = Hex.encodeHexString(md.digest());
//			System.out.printf("jdkSHA: %s %n", hexString);
//		} catch (NoSuchAlgorithmException e) {
//			e.printStackTrace();
//		} catch (UnsupportedEncodingException e) {
//			e.printStackTrace();
//		}
//
//	}
//	
//	public static void bcSHA() {
//		Digest digest = new SHA1Digest();
//		try {
//			digest.update(str.getBytes("utf-8"), 0, str.getBytes().length);
//			byte[] data = new byte[digest.getDigestSize()];
//			digest.doFinal(data, 0);
//			System.out.printf("bouncycastle: %s  %n", org.bouncycastle.util.encoders.Hex.toHexString(data));
//		} catch (UnsupportedEncodingException e) {
//			e.printStackTrace();
//		}
//	}
//
//	public static void commonscodec() {
//		try {
//			System.out.println("commonscodec 实现：" + DigestUtils.sha1Hex(str.getBytes("utf-8")));
//		} catch (UnsupportedEncodingException e) {
//			e.printStackTrace();
//		}
//	}
//
//}
